package com.ggs.rg.ybjb.systemmodule.shiro;



import com.ggs.rg.ybjb.pojomodule.util.CommonUtil;
import com.ggs.rg.ybjb.pojomodule.util.constants.ErrorEnum;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.web.filter.authc.UserFilter;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class LoginFilter extends UserFilter {

    /**
     * 这个方法用于shiro处理未登录请求,返回一个json对象给前端
     * 因此，只要进入了这个方法，就意味着登录失效了
     * 我们只需要在这个方法里，给前端返回一个登录失效的状态码即可
     * @param request
     * @param response
     * @throws IOException
     */
    @Override
    protected void redirectToLogin(ServletRequest request, ServletResponse response) throws IOException {
        response.setContentType("application/json; charset=utf-8");
        // 自定义返回内容
        response.getWriter().print(CommonUtil.errorJson(ErrorEnum.E_502, SecurityUtils.getSubject().getSession().getId().toString()));
    }
}
